package com.haohan.jingyuan.sys.helper;

import com.haohan.jingyuan.sys.dto.resp.DictInfoResp;
import com.haohan.jingyuan.sys.dto.resp.DictTreeResp;
import com.haohan.jingyuan.sys.entity.DictInfo;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 字典响应对象转换辅助类
 * 
 * @ClassName DictInfoRespHelper
 * @Description 字典信息响应对象转换辅助类
 * @Author hexijun
 * @Time 2025/01/19 14:00
 * @Version 1.0
 */
public class DictInfoRespHelper {

    /**
     * 将DictInfo实体转换为DictInfoResp响应对象
     * 
     * @param dictInfo 字典实体
     * @return 字典响应对象
     */
    public static DictInfoResp convert2DictInfoResp(DictInfo dictInfo) {
        if (dictInfo == null) {
            return null;
        }

        DictInfoResp resp = new DictInfoResp();
        resp.setId(dictInfo.getId());
        resp.setDictKey(dictInfo.getDictKey());
        resp.setDictValue(dictInfo.getDictValue());
        resp.setDictType(dictInfo.getDictType());
        resp.setParentCode(dictInfo.getParentCode());
        resp.setCreator(dictInfo.getCreator());
        resp.setGmtCreated(dictInfo.getGmtCreated());
        resp.setModifier(dictInfo.getModifier());
        resp.setGmtModified(dictInfo.getGmtModified());

        return resp;
    }

    /**
     * 将DictInfo实体列表转换为DictInfoResp响应对象列表
     * 
     * @param dictInfoList 字典实体列表
     * @return 字典响应对象列表
     */
    public static List<DictInfoResp> convert2DictInfoRespList(List<DictInfo> dictInfoList) {
        if (CollectionUtils.isEmpty(dictInfoList)) {
            return new ArrayList<>();
        }

        List<DictInfoResp> respList = new ArrayList<>();
        for (DictInfo dictInfo : dictInfoList) {
            respList.add(convert2DictInfoResp(dictInfo));
        }

        return respList;
    }

    /**
     * 将DictInfo实体转换为DictTreeResp树形响应对象
     * 
     * @param dictInfo 字典实体
     * @return 字典树形响应对象
     */
    public static DictTreeResp convert2DictTreeResp(DictInfo dictInfo) {
        if (dictInfo == null) {
            return null;
        }

        DictTreeResp resp = new DictTreeResp();
        resp.setId(dictInfo.getId());
        resp.setDictKey(dictInfo.getDictKey());
        resp.setDictValue(dictInfo.getDictValue());
        resp.setDictType(dictInfo.getDictType());
        resp.setParentCode(dictInfo.getParentCode());
        resp.setCreator(dictInfo.getCreator());
        resp.setGmtCreated(dictInfo.getGmtCreated());
        resp.setModifier(dictInfo.getModifier());
        resp.setGmtModified(dictInfo.getGmtModified());
        resp.setChildren(new ArrayList<>());

        return resp;
    }

    /**
     * 将DictInfo实体列表转换为DictTreeResp树形响应对象列表
     * 
     * @param dictInfoList 字典实体列表
     * @return 字典树形响应对象列表
     */
    public static List<DictTreeResp> convert2DictTreeRespList(List<DictInfo> dictInfoList) {
        if (CollectionUtils.isEmpty(dictInfoList)) {
            return new ArrayList<>();
        }

        List<DictTreeResp> respList = new ArrayList<>();
        for (DictInfo dictInfo : dictInfoList) {
            respList.add(convert2DictTreeResp(dictInfo));
        }

        return respList;
    }
}
